package com.wtwd.device.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wtwd.device.model.dto.DeviceBloodOxygenTotalDto;
import com.wtwd.device.model.entity.DeviceBloodOxygen;
import com.wtwd.device.model.entity.DeviceBloodOxygenTotal;
import com.wtwd.device.model.vo.BloodOxygenVo;
import com.wtwd.device.model.vo.DeviceBloodOxygenTotalVo;

import java.util.List;

public interface AppDeviceBloodOxygenTotalService extends IService<DeviceBloodOxygenTotal> {

    /**
     * 获取某天的血氧统计
     * 和某天的血氧详细信息
     *
     * @param deviceId
     * @param time
     * @return
     */
    DeviceBloodOxygenTotalVo getDayBloodOxygenByTime(Long deviceId, Long id, String time);


    /**
     * 获取某天的血氧统计信息
     *
     * @param deviceId
     * @param time
     * @return
     */
    DeviceBloodOxygenTotal getDayDeviceBloodOxygenTotalByTime(Long deviceId, String time);

    /**
     * 根据起始时间获取血氧数据
     *
     * @param deviceId
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeviceBloodOxygenTotal> getDaysBloodOxyge(Long deviceId, String startTime, String endTime);

    /**
     * 同步血氧数据
     * 1.同步统计表的数据以app计算为准
     * 2.将蓝牙数据同步至血氧详情表
     * 2.返回给app每一天的统计详细信息
     * <p>
     * 理论上数据不会很多,由于时间问题占时循环插入
     *
     * @return
     */
    List<DeviceBloodOxygenTotal> synchronizationBloodOxygen(List<DeviceBloodOxygenTotalDto> deviceBloodOxygenTotalDtos);

    /**
     * 按天插入或者更新血氧总数
     *
     * @param deviceBloodOxygenTotal
     * @return
     */
    boolean insertOrUpdate(DeviceBloodOxygenTotal deviceBloodOxygenTotal);

    /**
     * 批量插入或者更新
     *
     * @param deviceBloodOxygenTotals
     * @return
     */
    boolean bathInsertOrUpdate(List<DeviceBloodOxygenTotal> deviceBloodOxygenTotals);


    /**
     * 通过日期查询一台设备数据最新那条数据
     */
    BloodOxygenVo selectBloodOxygenByTime(Long deviceId, String time);
}
